<?php

namespace MoChat\App\Client\Contract;

interface ClientTagContract
{
    /**
     * 查询多条 - 根据多个标签名称和分组id.
     * @param array $names 标签名称
     * @param int $groupId 分组id
     * @param array $columns 查询字段
     * @return array 数组
     */
    public function getWorkContactTagsByNamesGroupId(array $names, $groupId, array $columns = ['*']): array;

    public function getWorkContactTagsById(array $ids, array $columns = ['*']): array;
    /**
     * 通过ids获取标签信息
     * @param $ids
     * @param array $filed
     * @return array
     */
    public function getAllClientTagByIds($ids, array $filed = ['*']): array;

    /**
     * 查询多条 - 根据分组id.
     * @param array $groupId 分组id
     * @param array|string[] $columns 查询字段
     * @return array 数组
     */
    public function getWorkContactTagsByGroupIds(array $groupId, array $columns = ['*']): array;

    /**
     * 查询多条 - 根据标签名称.
     * @param int $corpId 企业id
     * @param string $name 标签名称
     * @param array|string[] $columns
     */
    public function getWorkContactTagsByCorpIdName(int $corpId, string $name, array $columns = ['*']): array;

    /**
     * 查询分组标签数量.
     */
    public function countWorkContactTagByGroupId(int $groupId): int;

    /**
     * 查询多条 - 根据ID.
     * @param array $ids ID
     * @param array|string[] $columns 查询字段
     * @return array 数组
     */
    public function getClientTagsById(array $ids, array $columns = ['*']): array;

    /**
     * 修改单条 - 根据ID.
     * @param int $id id
     * @param array $data 修改数据
     * @return int 修改条数
     */
    public function updateWorkContactTagById(int $id, array $data): int;

    /**
     * 删除 - 多条
     * @param array $ids 删除ID
     * @return int 删除条数
     */
    public function deleteWorkContactTags(array $ids): int;

    /**
     * 查询单条 - 根据群组id和标签名称.
     * @param int $groupId 群组id
     * @param string $name 标签名称
     * @param array $columns 查询字段
     * @return array 返回值
     */
    public function getWorkContactTagByGroupIdName(int $groupId, string $name, array $columns = ['*']): array;

    /**
     * 添加多条
     * @param array $data 添加的数据
     * @return bool 执行结果
     */
    public function createWorkContactTags(array $data): bool;
}